package jp.syuriken.snsw.terenaibot.plugins;

import jp.syuriken.snsw.terenaibot.BotConfiguration;

/**
 * プラグイン基本インターフェース。
 * 
 * <p>PostWrapperPoolに登録するときはデフォルトコンストラクタ内で登録してください。</p>
 * <p>処理の流れは、デフォルトコンストラクタ→{@link #constructPlugin(BotConfiguration)}→それぞれのフックになります。</p>
 * @author $Author$
 */
public interface RegisterablePlugin {
	
	/**
	 * プラグインの初期設定などを行う。
	 * 
	 * <p>この関数はすべてのプラグイン呼び出しの前に呼ばれます。</p>
	 * @param configuration ボット設定
	 */
	void constructPlugin(BotConfiguration configuration);
	
	/**
	 * プラグインの破棄。
	 * 
	 */
	void destructPlugin();
	
	/**
	 * プラグイン名を取得する
	 * 
	 * @return プラグイン名
	 */
	String getPluginName();
}
